
(define (one) (lambda (z s) (s z)))
(define (two) (lambda (z s) (s (s z))))
(define (three) (lambda (z s) (s (s (s z)))))

(define (add x y) (lambda (z s) (y (x z s) s)))
(define (mul x y) (lambda (z s) (x z (lambda (z) (y z s)))))

(define m1 ((one) 0 (lambda (i) (print "i"))))
(define ok1 (print ""))

(define m2 ((two) 0 (lambda (i) (print "i"))))
(define ok2 (print ""))

(define m3 ((add (two) (one)) 0 (lambda (i) (print "i"))))
(define ok3 (print ""))

(define m4 ((mul (two) (three)) 0 (lambda (i) (print "i"))))
(define ok4 (print ""))
